home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1999 March
/
EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso
/
earcd
/
devel
/
gencodec
/
safe memory
/
mem.doc
< prev
next >
Wrap
Text File
|
1999-01-01
|
4KB
|
104 lines
MEM: A memory management safety net.
written by
---------------
Simon Bullen
10 Hogan Street
Sunbury 3429
Australia
---------------
In this archive, there should be the following files:
mem.doc 3594 bytes
mem.c 6801 bytes
mem.h 523 bytes
Ever had the problem of a program you're trying to debug swallowing
24 bytes somewhere, and not knowing where? Or perhaps you're playing
around with one of the more complex memory structures, and it gurus
a lot due to incorrect memory frees? Painful to debug, aren't they?
Well, no longer!! With these two teeny files, your programs will crash
from memory mismanagement never again!
mem.c provides a safety net around all your calls to AllocMem and
FreeMem, recording what you've allocated, and where you allocated (ie
where in the source-code). Then, when you do something wrong (like try to
free something you never allocated), it simply displays a nice little
debug message like this:
hello.c 44: Incorrect free size. (64 instead of 2300)
or this:
hello.c 45: Free twice (?). ($34, 2478756)
There must be very few Amiga programmers out there who haven't
had the "Free Twice" guru!
mem.c also provides a mechanism to find out just what you haven't
gotten around to freeing yet (you've been -meaning- to for ages...):
hello.c 76: Memory List
Address Size File Line
------- ---- ---- ----
$123450 24 hello.c 42
$200000 4500 there.c 97
Useful, eh? But that's not all!! Gone are the days when you have to
reboot your computer every time your rogue program eats up all your
precious memory; A simple call will free everything you allocated!
Ok, enough of the advertisement; here's how to do it:
Simply #include "mem.h" (make sure you put that AFTER #include
"proto/exec.h" !!!!!!). Link with mem.o, and place calls to
ShowMemList() and ClearMemList() where-ever you feel appropriate. (At the
end of main() is the most obvious place, though the more industrious
could put the calls in break & exit traps.)
To find out how it works, read the extensive documentation in mem.c.
MEM: A memory management safety net.
written by
---------------
Simon Bullen
10 Hogan Street
Sunbury 3429
Australia
---------------
----------------------------
s914373@minyos.xx.rmit.OZ.AU
----------------------------
You are free to do whatever you like with
this software, so long as you give credit
where credit is due.
If you find it useful (like it saves you
3 days of debugging time), send whatever
you feel appropriate ($10 would be most
welcome!).
I would be very interested to here any
comments, suggestions, and flames you
may have. (Please, dont take it upon
yourself to point out my spelling
errors!).